home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / hack / 3_1 / sys / msdos / makemsc.utl < prev    next >
Encoding:
Text File  |  1993-01-22  |  7.3 KB  |  322 lines

  1. #    SCCS Id: @(#)MakeMSC.utl     3.1     93/01/18
  2. # Copyright (c) NetHack PC Development Team 1992, 1993.
  3. # NetHack may be freely redistributed.  See license for details.
  4. #
  5. # PC NetHack 3.1 Utilities Source Code Makefile for Microsoft(tm) "C" >= 6.0ax
  6. #
  7. #    In addition to your C compiler,
  8. #
  9. #    if you want to change        you will need a
  10. #    files with suffix        workalike for
  11. #           .y                yacc
  12. #           .l                lex
  13.  
  14. #
  15. #    Executables.
  16. #
  17.  
  18. CC    = cl
  19. LINK    = link
  20. MAKEBIN    = make45l
  21.  
  22. #
  23. #    Yacc/Lex ... if you got 'em.
  24. #    (Note: if you don't, leave the top pair uncommented.)
  25. #
  26.  
  27. YACC    = yacc
  28. LEX    = lex
  29. # YACC    = bison -y
  30. # LEX    = flex
  31.  
  32. YTABC    = y_tab.c
  33. YTABH    = y_tab.h
  34. LEXYYC    = lexyy.c
  35.  
  36. #
  37. #    Flags.
  38. #
  39.  
  40. #
  41. #    + prepare for CodeView symbolic debugger.
  42. #
  43.  
  44. CDFLAGS    =
  45. #CDFLAGS = /Zi
  46.  
  47. LDFLAGS =
  48. #LDFLAGS = /CO
  49.  
  50. #
  51. #    CC
  52. #
  53.  
  54. CPPFLAGS = /E /AL /c /Os /Gs /Gt20 /Zp1 /W0 /I$(INCL) $(CDFLAGS)
  55. CFLAGS     = /AL /c /Os /Gs /Gt20 /Zp1 /W0 /I$(INCL) $(CDFLAGS)
  56.  
  57. #
  58. #    Link
  59. #
  60.  
  61. LFLAGS    = /noi /seg:512 /map /st:5120 $(LDFLAGS)
  62.  
  63. #
  64. #    Directories
  65. #
  66.  
  67. INCL    = ..\include
  68. DAT    = ..\dat
  69. SRC    = ..\src
  70. OBJ    = $(SRC)\o
  71.  
  72. default: all
  73. #
  74. #    If you have yacc and lex programs and make any changes, comment
  75. #    out the upper two targets and uncomment the lower two.
  76. #
  77.  
  78. do_yacc: yacc_msg
  79. do_lex:  lex_msg
  80. # do_yacc: yacc_act
  81. # do_lex:  lex_act
  82.  
  83. #
  84. #    Optional C library specifier for those with non-standard
  85. #    libraries or a multiple-target library setup.
  86. #
  87.  
  88. # CLIB       = llibcer /nod
  89. CLIB     =
  90.  
  91. #############################################################################
  92. #
  93. # nothing below this line should have to be changed
  94. #
  95.  
  96. #
  97. #    Utility Objects.
  98. #
  99.  
  100. MAKESRC     =    makedefs.c
  101.  
  102. SPLEVSRC    =   lev_yacc.c  lev_$(LEX).c  lev_main.c  panic.c
  103.  
  104. DGNCOMPSRC  =   dgn_yacc.c  dgn_$(LEX).c  dgn_main.c
  105.  
  106. MAKEOBJS    =    makedefs.o      $(OBJ)\monst.o    $(OBJ)\objects.o
  107.  
  108. SPLEVOBJS   =    lev_yacc.o      lev_$(LEX).o        lev_main.o \
  109.         $(OBJ)\alloc.o      $(OBJ)\decl.o     $(OBJ)\drawing.o \
  110.         $(OBJ)\monst.o    $(OBJ)\objects.o  panic.o
  111.  
  112. DGNCOMPOBJS =    dgn_yacc.o      dgn_$(LEX).o        dgn_main.o \
  113.         $(OBJ)\alloc.o      panic.o
  114.  
  115. RECOVOBJS   =    recover.o
  116.  
  117. #
  118. #    Header Objects.
  119. #
  120.  
  121. CONFIG_H   = $(GLOBAL_H)           $(INCL)\tradstdc.h $(INCL)\config.h
  122. DECL_H     = $(YOU_H)              $(INCL)\quest.h    $(INCL)\spell.h  \
  123.              $(INCL)\color.h       $(INCL)\obj.h      $(INCL)\onames.h \
  124.              $(INCL)\pm.h          $(INCL)\decl.h
  125. DGN_FILE_H = $(INCL)\align.h       $(INCL)\dgn_file.h
  126. DISPLAY_H  = $(MONDATA_H)          $(INCL)\vision.h   $(INCL)\display.h
  127. DUNGEON_H  = $(INCL)\align.h       $(INCL)\dungeon.h
  128. EMIN_H     = $(DUNGEON_H)          $(INCL)\emin.h
  129. EPRI_H     = $(DUNGEON_H)          $(INCL)\align.h    $(INCL)\epri.h
  130. ESHK_H     = $(DUNGEON_H)          $(INCL)\eshk.h
  131. GLOBAL_H   = $(PCCONF_H)           $(INCL)\coord.h    $(INCL)\global.h
  132. HACK_H     = $(CONFIG_H)           $(DUNGEON_H)       $(DECL_H)          \
  133.              $(DISPLAY_H)          $(RM_H)            $(INCL)\monsym.h   \
  134.              $(INCL)\mkroom.h      $(INCL)\objclass.h $(INCL)\trap.h     \
  135.              $(INCL)\flag.h        $(INCL)\vision.h   $(INCL)\wintype.h  \
  136.              $(INCL)\engrave.h     $(INCL)\rect.h     $(INCL)\winprocs.h \
  137.              $(INCL)\trampoli.h    $(INCL)\hack.h
  138. MONDATA_H  = $(INCL)\align.h       $(INCL)\mondata.h
  139. MONST_H    = $(INCL)\align.h       $(INCL)\monst.h
  140. PCCONF_H   = $(INCL)\micro.h       $(INCL)\system.h   $(INCL)\pcconf.h
  141. PERMONST_H = $(INCL)\monattk.h     $(INCL)\monflag.h  $(INCL)\align.h \
  142.              $(INCL)\permonst.h
  143. RM_H       = $(INCL)\align.h       $(INCL)\rm.h
  144. SP_LEV_H   = $(INCL)\align.h       $(INCL)\sp_lev.h
  145. VAULT_H    = $(DUNGEON_H)          $(INCL)\vault.h
  146. YOU_H      = $(MONST_H)            $(YOUPROP_H)       $(INCL)\align.h \
  147.              $(INCL)\attrib.h      $(INCL)\you.h
  148. YOUPROP_H  = $(PERMONST_H)         $(MONDATA_H)       $(INCL)\prop.h \
  149.              $(INCL)\pm.h          $(INCL)\youprop.h
  150.  
  151. #
  152. #    Make Rules.
  153. #
  154.  
  155. .SUFFIXES:  .exe .o .c .y .l
  156.  
  157. .c.o:
  158.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  159.  
  160. #
  161. #    Primary Targets.
  162. #
  163. all:    utility.tag
  164.  
  165. utility.tag: $(OBJ)             $(INCL)\onames.h     $(INCL)\pm.h \
  166.              $(SRC)\monstr.c    $(SRC)\vis_tab.c     lev_comp.exe \
  167.              dgn_comp.exe       recover.exe
  168.              echo utilities made > utility.tag
  169.  
  170. $(OBJ):
  171.     if not exist $(OBJ)\*.* mkdir $(OBJ)
  172.  
  173. clean:
  174.     del *.o
  175.     del *.map
  176.  
  177. spotless: clean
  178.     if exist utility.tag       del utility.tag
  179.     if exist makedefs.exe       del makedefs.exe
  180.     if exist lev_comp.exe       del lev_comp.exe
  181.     if exist dgn_comp.exe       del dgn_comp.exe
  182.     if exist recover.exe       del recover.exe
  183.     if exist $(INCL)\date.h       del $(INCL)\date.h
  184.     if exist $(INCL)\onames.h  del $(INCL)\onames.h
  185.     if exist $(INCL)\pm.h       del $(INCL)\pm.h
  186.     if exist $(INCL)\vis_tab.h del $(INCL)\vis_tab.h
  187.     if exist $(SRC)\monstr.c   del $(SRC)\monstr.c
  188.     if exist $(SRC)\vis_tab.c  del $(SRC)\vis_tab.c
  189.  
  190. #
  191. #    Secondary Targets.
  192. #
  193.  
  194. $(INCL)\onames.h: makedefs.exe
  195.     .\makedefs -o
  196.  
  197. $(INCL)\pm.h: makedefs.exe
  198.     .\makedefs -p
  199.  
  200. $(SRC)\monstr.c: makedefs.exe
  201.     .\makedefs -m
  202.  
  203. $(SRC)\vis_tab.h: makedefs.exe
  204.     .\makedefs -z
  205.  
  206. $(SRC)\vis_tab.c: makedefs.exe
  207.     .\makedefs -z
  208.  
  209. #
  210. #    Makedefs Stuff
  211. #
  212.  
  213. makedefs.exe:    $(MAKEOBJS)
  214.     $(LINK) $(LFLAGS) $(MAKEOBJS), $*.exe,, $(CLIB);
  215.  
  216. makedefs.o:    $(CONFIG_H)        $(PERMONST_H)      $(INCL)\objclass.h \
  217.         $(INCL)\monsym.h    $(INCL)\qtext.h
  218.  
  219. #
  220. #    Level Compiler Dependencies
  221. #
  222.  
  223. lev_comp.exe:    $(SPLEVOBJS)
  224.     $(LINK) $(LFLAGS) $(SPLEVOBJS),lev_comp.exe,, $(CLIB);
  225.  
  226. lev_yacc.o:    $(HACK_H)   $(SP_LEV_H)    lev_yacc.c
  227.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  228.  
  229. lev_$(LEX).o:    $(HACK_H)   $(SP_LEV_H)    $(INCL)\lev_comp.h \
  230.         lev_$(LEX).c
  231.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  232.  
  233. lev_main.o:    $(HACK_H)   $(SP_LEV_H)
  234.  
  235. $(INCL)\lev_comp.h: lev_yacc.c
  236.  
  237. lev_yacc.c:    lev_comp.y
  238.     $(MAKEBIN) YY=lev do_yacc
  239.  
  240. lev_$(LEX).c:    lev_comp.l
  241.     $(MAKEBIN) YY=lev do_lex
  242.  
  243. #
  244. #    Dungeon Dependencies
  245. #
  246.  
  247. dgn_comp.exe:    $(DGNCOMPOBJS)
  248.     $(LINK) $(LFLAGS) $(DGNCOMPOBJS),$*.exe,, $(CLIB);
  249.  
  250. dgn_yacc.o:    $(HACK_H)   $(DGN_FILE_H)  dgn_yacc.c
  251.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  252.  
  253. dgn_$(LEX).o:    $(HACK_H)   $(DGN_FILE_H)  $(INCL)\dgn_comp.h \
  254.         dgn_$(LEX).c
  255.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  256.  
  257. dgn_main.o:    $(HACK_H)
  258.  
  259. $(INCL)\dgn_comp.h:    dgn_yacc.c
  260.  
  261. dgn_yacc.c: dgn_comp.y
  262.     $(MAKEBIN) YY=dgn do_yacc
  263.  
  264. dgn_$(LEX).c:  dgn_comp.l
  265.     $(MAKEBIN) YY=dgn do_lex
  266.  
  267. #
  268. #    Yacc & Lex Magic.
  269. #
  270.  
  271. yacc_msg:
  272.     @echo $(YY)_comp.y has changed. To update $(YY)_yacc.c and $(YY)_comp.h run $(YACC).
  273.  
  274. yacc_act:
  275.     $(YACC) -d $(YY)_comp.y
  276.     copy $(YTABC) $(YY)_yacc.c
  277.     copy $(YTABH) $(INCL)\$(YY)_comp.h
  278.     del $(YTABC)
  279.     del $(YTABH)
  280.  
  281. lex_msg:
  282.     @echo $(YY)_comp.l has changed. To update $(YY)_$(LEX).c run $(LEX).
  283.  
  284. lex_act:
  285.     $(LEX) $(YY)_comp.l
  286.     copy $(LEXYYC) $(YY)_$(LEX).c
  287.     del $(LEXYYC)
  288.  
  289. #
  290. #    Recover Utility
  291. #
  292.  
  293. recover.exe:    $(RECOVOBJS)
  294.     $(LINK) $(LFLAGS) $*.o,$*.exe,, $(CLIB);
  295.  
  296. recover.o:    $(CONFIG_H)    recover.c
  297.     $(CC) $(CFLAGS) /Fo$*.o $*.c
  298.  
  299. #
  300. #    Other Dependencies.
  301. #
  302.  
  303. $(OBJ)\alloc.o:    $(CONFIG_H)    $(SRC)\alloc.c
  304.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  305.  
  306. $(OBJ)\decl.o:  $(HACK_H)       $(INCL)\quest.h   $(SRC)\decl.c
  307.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  308.  
  309. $(OBJ)\drawing.o: $(HACK_H)     $(INCL)\termcap.h $(SRC)\drawing.c
  310.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  311.  
  312. $(OBJ)\monst.o: $(CONFIG_H)         $(PERMONST_H)    $(ESHK_H)     \
  313.         $(EPRI_H)         $(VAULT_H)        $(INCL)\monsym.h \
  314.         $(INCL)\color.h    $(SRC)\monst.c
  315.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  316.  
  317. $(OBJ)\objects.o: $(CONFIG_H)         $(INCL)\obj.h    $(INCL)\objclass.h \
  318.           $(INCL)\prop.h     $(INCL)\color.h    $(SRC)\objects.c
  319.     $(CC) $(CFLAGS) /Fo$(OBJ)\$*.o $(SRC)\$*.c
  320.  
  321. panic.o:    $(CONFIG_H)
  322.